# 列表
# 由有一系列变量组成的可变序列容器
# 列表可以一次性存储多个数据，且可以为不同的数据类型


# 列表的操作

# -------------------查找操作-----------------
# 1.下标和切片： 查找、修改、截取
# 2.index函数：返回指定的数据所在位置的下标
# 3.count函数：统计指定数据在当前列表中出现的次数
# 4.len函数（内置的）：访问列表长度，即列表中数据的个数

# -------------------添加操作-----------------
# 5.append函数：列表结尾追加数据
# 6.extend函数：列表结尾追加数据，如果数据是一个序列，则将这个序列的数据逐一添加到列表
# 7.insert函数：指定位置新增数据

# -------------------删除操作-----------------
# 8.pop函数：删除指定下标的数据（默认为最后一个），并返回该数据
# 9.del表达式：内置的，删除。
# 10.remove函数：移除列表中某个数据的第一个匹配项

# -------------------顺序操作-----------------
# 11.reverse函数:逆序
# 12.sort函数：重新排序
# 13.for循环遍历

# lst=[]
lst = [12, 'abc', 12, 3.14, [1, 2]]

lst[1] = 'abcd'  # 修改
print(lst)

# -------------------查找操作-----------------
print(lst.index(12))
print(lst.count(12))
print(len(lst))

# -------------------添加操作-----------------
lst.append('hello')
print(lst)  # [12, 'abcd', 12, 3.14, [1, 2], 'hello']

lst.extend('world')
print(lst)  # [12, 'abcd', 12, 3.14, [1, 2], 'hello', 'w', 'o', 'r', 'l', 'd']

lst.insert(0, 100)
print(lst)  # [100,12, 'abcd', 12, 3.14, [1, 2], 'hello', 'w', 'o', 'r', 'l', 'd']

# -------------------删除操作-----------------
lst.pop()
print(lst)  # [100, 12, 'abcd', 12, 3.14, [1, 2], 'hello', 'w', 'o', 'r', 'l']

lst.pop(2)  # 删除‘abcd’   [100, 12, 12, 3.14, [1, 2], 'hello', 'w', 'o', 'r', 'l']
print(lst)

del lst[3]  # 删除‘3.14’    [100, 12, 12, [1, 2], 'hello', 'w', 'o', 'r', 'l']
print(lst)

lst.remove('hello')  # 删除‘hello’
print(lst)  # [100, 12, 12, [1, 2], 'w', 'o', 'r', 'l']

lst.remove(12)  # 只删除第一个12
print(lst)  # [100, 12, [1, 2], 'w', 'o', 'r', 'l']

# -------------------顺序操作-----------------
print(lst[::-1])  # 使用切片的方法 逆序   ['l', 'r', 'o', 'w', [1, 2], 12, 100]

lst.reverse()  # 逆序
print(lst)  # ['l', 'r', 'o', 'w', [1, 2], 12, 100]

# ---------------------排序操作-----------------------
let2 = [4, 9, 98, 32, 2, 12]
let2.sort()
print(let2)  # [2, 4, 9, 12, 32, 98]

let2.sort(reverse=True)  # 逆序
print(let2)  # [98, 32, 12, 9, 4, 2]


# --------------------for循环遍历-----------------------
for i in lst:
    print(i)